"""
使用turtle datetime 来实现绘制七段数码管
"""
import datetime
import turtle

"""
main function
draw date
draw digit
draw line
"""


def main():
    turtle.setup(1000, 350, 300, 200)
    turtle.pensize(5)
    turtle.penup()
    turtle.fd(-350)
    # 获取date
    now_date = datetime.datetime.now()
    now_date_format = now_date.strftime('%Y-%m=%d+')
    # 调用draw date函数
    draw_date(now_date_format)
    turtle.hideturtle()
    turtle.done()


def draw_date(date):
    turtle.color('red')
    for i in date:
        if i == '-':
            turtle.write('年', font=('Arial', 20, 'normal'))
            turtle.pencolor('green')
            turtle.fd(40)
        elif i == '=':
            turtle.write('月', font=('Arial', 20, 'normal'))
            turtle.pencolor('blue')
            turtle.fd(40)
        elif i == '+':
            turtle.write('日', font=('Arial', 20, 'normal'))
        else:
            draw_digit(eval(i))


def draw_digit(item):
    # 绘制中间横线 三元运算符 value_if_true if condition else value_if_false 相当于 bool ? a : b
    draw_line(True) if item in [2, 3, 4, 5, 6, 8, 9] else draw_line(False)
    # 绘制右下竖线
    draw_line(True) if item in [0, 1, 3, 4, 5, 6, 7, 8, 9] else draw_line(False)
    # 绘制底部横线
    draw_line(True) if item in [0, 2, 3, 5, 6, 8, 9] else draw_line(False)
    # 绘制左下竖线
    draw_line(True) if item in [0, 2, 6, 8] else draw_line(False)
    # 由于在画线函数中的最后一步已经执行了向右转向，所以在这里我们在左下横线往上走需要先像左转向90度
    turtle.left(90)
    # 绘制左上竖线
    draw_line(True) if item in [0, 4, 5, 6, 8, 9] else draw_line(False)
    # 绘制顶部横线
    draw_line(True) if item in [0, 2, 3, 5, 6, 7, 8, 9] else draw_line(False)
    # 绘制右上竖线
    draw_line(True) if item in [0, 1, 2, 3, 4, 7, 8, 9] else draw_line(False)
    # 此时海龟指向中间横线的左边的方向，所以我们要向左转180度，然后抬起笔向前走20像素，这样海龟就指向了画下一个数字的起点
    turtle.left(180)
    turtle.penup()
    turtle.fd(20)


def draw_line(draw):
    draw_gap()
    turtle.pendown() if draw else turtle.penup()
    # fd 表示让海龟当前的方向前进40个像素
    turtle.fd(40)
    draw_gap()
    # right 表示让海龟向右旋转90度
    turtle.right(90)


def draw_gap():
    """
    绘制数字中每根线之间的间隔
    """
    turtle.penup()
    turtle.fd(5)


main()
